This application generally relates to computer systems, and more particularly to monitoring a computer program executing in a computer system.
As part of software development, it may be useful to obtain execution information about a software application. This may be performed by monitoring the software application as it executes in a computer system. In particular, there exists automated techniques for gathering execution information about a software application. This information may include execution information, such as profiling and coverage data, to enable a software developer, for example, to identify performance bottlenecks, testing coverage performed for a particular application, and the like.
Generally, software application monitoring tools for gathering test coverage and execution information exist for monitoring a single process. Problems may exist in using existing monitoring tools to gather information in connection with a software application executing in a distributed computing environment. In particular, if the software application includes more than one process in which each process executes on more than one processor, existing software tools do not automatically provide for collectively gathering execution information about the multiple processes of the software application. In other words, existing monitoring tools may not provide for correlating and collectively gathering execution information, such as related to profiling and testing coverage, about multiple processes of an N-tier software application.
Additionally, existing software application monitoring tools may be deficient in support provided for gathering execution information about N-tier applications that execute in a distributed computing environment, such as execution information particularly useful in a client-server application. For example, particularly relevant in a distributed computing environment may be information related to client and server communications, such as measuring latency in communication.
Thus, it may be useful to provide an efficient technique for gathering execution information about an application having more than one process executing concurrently, in particular, in a distributed computing environment.
In accordance with principles of the invention are a method and computer program product for gathering data about an application. Execution control is intercepted at a first communication point between a calling function and a called function for a cross execution context call. The calling function is associated with a first execution context and the called function is associated with a second execution context. The call origin information is extracted prior to executing the called function at a second communication point. At least one parameter is communicated between a called function and the calling function in which the at least one parameter is associated with information about the cross execution context call.
In accordance with another aspect of the invention are a method and computer program product for gathering data about a distributed application. Execution control is intercepted at a first communication point between a client and a server for a remote procedure call to include call origin information in a request to perform the remote procedure call. The call origin information is extracted prior to servicing the request at a second communication point. At least one parameter is communicated between the client and the server in which the at least one parameter is associated with information about the remote procedure call.